<?php

App::uses('PrivadoController', 'Controller');

class RecuperacionesController extends PrivadoController
{

    private function parseFile($fileStr, $idFile)
    {
        $parts = explode('\\', $fileStr);
        $yearMonthFile = array_slice($parts, -3, 3);
        $year = $yearMonthFile[0];
        $month = $yearMonthFile[1];
        $file = @fopen($fileStr, "r");
        if ($file)
        {
            $i = 0;
            while (($line = fgets($file)) !== false)
            {
                if ($i++ == 0)
                    continue;
                $array = array();
                $strDate = substr($line, 1, 8);
                $date = new DateTime($strDate);
                $array['fecha'] = $date->format('Y-m-d');
                $array['anio'] = $year;
                $array['mes'] = $month;
                $array['rfc'] = substr($line, 19, 10);
                $array['concepto'] = trim(substr($line, 59, 40));
                $array['monto_cadena'] = (int) trim(substr($line, 100, 16));
                $array['monto'] = (float) $array['monto_cadena'] / 100;
                $array['cuenta_bancaria'] = trim(substr($line, 141, 10));
                $array['codigo'] = (int) trim(substr($line, 165, 2));
                $array['id_archivo'] = $idFile;
                $this->Recuperacion->save($array);
                $this->Recuperacion->clear();
            }
            if (!feof($file))
            {
                echo "Error: fallo inesperado de fgets()\n";
            }
            fclose($file);
        }
    }

    private function getDirRec($path)
    {
        $directorio = opendir(WWW_ROOT . 'files\\' . $path);
        $excludeDirs = array('.', '..');
        $i = 0;
        while ($archivo = readdir($directorio)) //obtenemos un archivo y luego otro sucesivamente
        {
            if (is_dir(WWW_ROOT . 'files\\' . $path . '\\' . $archivo))//verificamos si es o no un directorio
            {
                if (in_array($archivo, $excludeDirs) === false)
                {
                    $this->getDirRec($path . '\\' . $archivo);
                }
            }
            else
            {
                $file = array();
                $file['ubicacion'] = WWW_ROOT . 'files\\' . $path . '\\' . $archivo;
                $this->Archivo->save($file);
                $this->parseFile(WWW_ROOT . 'files\\' . $path . '\\' . $archivo, $this->Archivo->getInsertId());
                $this->Archivo->clear();
            }
        }
    }

    public function Index()
    {
        set_time_limit(36000);
        $this->set('title', 'Recuperaciones');
        $this->set('description', 'Migracion de recuperaciones');
        $this->loadModel('Recuperacion');
        $this->loadModel('Archivo');
        //$this->ParseFile('C:\xampp\htdocs\cake2.4\app\webroot\files\faltantes\2013\01\FI003CL.114143.31012013.32155');
        //$this->Recuperacion->query('truncate table recuperaciones');
        //$this->Recuperacion->query('truncate table archivos');
        $this->getDirRec('Recuperaciones3');
    }

    public function CreateUsers()
    {
        set_time_limit(36000);
        $this->loadModel('User');
        $this->loadModel('Recuperacion');
        $rfcs = $this->User->getDistinctRfc();
        foreach ($rfcs as $r)
        {
            $rfc = $r['recuperaciones']['rfc'];
            $u = array();
            $u['user'] = $rfc;
            $u['pass'] = substr($rfc, 4); 
            $this->User->save($u);
            $this->User->clear();
        }
        $this->view = 'Index';
        $this->set('title', 'Recuperaciones');
        $this->set('description', 'Creación de usuarios');
    }

    public function hash()
    {
//        $this->loadModel('User');
//        $u = array();
//        $u['user'] = 'eliseo';
//        $u['pass'] = '570614';
//        $this->User->save($u);
    }

}
